import javax.print.DocFlavor;

/**
 * @program: 力扣刷题
 * @description:给你一个 32 位的有符号整数 x ，返回将 x 中的数字部分反转后的结果。
 * 如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ，就返回 0。
 * 假设环境不允许存储 64 位整数（有符号或无符号）。
 * eg:x = 123
 * 输出：321
 * 示例 2：
 * 输入：x = -123
 * 输出：-321
 * 示例 3：
 * 输入：x = 120
 * 输出：21
 * @author: LiChong
 * @create: 2021-06-08 10:56
 **/
public class Code07 {
    public static void main(String[] args) {
        System.out.println(reverseInteger(Integer.MIN_VALUE));
    }
    // 方法一：字符串拼接
    public static int reverse(int x) {
        StringBuilder stringBuilder=null;
        String s = String.valueOf(x);
        if (x>=0){
            stringBuilder = new StringBuilder();
            for (int i = s.length()-1; i >=0 ; i--) {
                stringBuilder.append(s.charAt(i));
            }

            long aLong = Long.parseLong(stringBuilder.toString());
            if (aLong>Integer.MAX_VALUE){
                return 0;
            }else {
                return (int)aLong;
            }
        }else{
            stringBuilder = new StringBuilder();
            stringBuilder.append(s.charAt(0));
            for (int i = s.length()-1; i >=1 ; i--) {
                stringBuilder.append(s.charAt(i));
            }
            long aLong = Long.parseLong(stringBuilder.toString());
            if (aLong<Integer.MIN_VALUE){
                return 0;
            }else {
                return (int)aLong;
            }

        }

    }
    // 运用取模
    public static int reverseInteger(int x){
        int res = 0;
        while(x!=0){
            int mod = x%10;
            x/=10;
            if (res>Integer.MAX_VALUE/10||res<Integer.MIN_VALUE/10){
                return 0;
            }
            res = res * 10 +mod;
        }
        return res;

    }
}
